using System;
using System.Text;
using System.Configuration;
using System.Web.UI.WebControls;
namespace Credinka.Ayni.GEN.UTL
{
    public class utlPaginacion
    {
        private int iNumeroRegistrosMostrar;
        private int iNumeroPaginasMostrar = Int32.Parse(ConfigurationManager.AppSettings["NumeroPaginasMostrar"]);
        private int iPaginaActual;
        private int iTotalRegistros;
        private int iTotalPaginas;
        private int iNumeropaginaIzq;
        private int iPaginaHasta;
        StringBuilder sb;
        Label lblTotalPaginas;
        Literal litPaginacion;
        HiddenField hdfPaginaActual;
        Button btnAyuda;

        public utlPaginacion(int piTotalRegistros, int piNumeroRegistrosMostrar, int piPaginaActual, Label plblTotalPaginas, Literal plitPaginacion, HiddenField phdfPaginaActual, Button pbtnAyuda)
        {
            iTotalRegistros = piTotalRegistros;
            iNumeroRegistrosMostrar = piNumeroRegistrosMostrar;
            iPaginaActual = piPaginaActual;
            lblTotalPaginas = plblTotalPaginas;
            litPaginacion = plitPaginacion;
            hdfPaginaActual = phdfPaginaActual;
            btnAyuda = pbtnAyuda;
        }

        public void Paginar()
        {
            if (iTotalRegistros % iNumeroRegistrosMostrar == 0) iTotalPaginas = (iTotalRegistros / iNumeroRegistrosMostrar);
            else iTotalPaginas = (iTotalRegistros / iNumeroRegistrosMostrar) + 1;
            lblTotalPaginas.Text = iTotalPaginas.ToString();
            sb = new StringBuilder();
            iNumeropaginaIzq = (((iPaginaActual - 1) / iNumeroPaginasMostrar) * iNumeroPaginasMostrar) + 1;
            if (iNumeropaginaIzq > 1) sb.Append("<li><a href=\"javascript:void(0)\" onclick=\"IrPagina(" + (iNumeropaginaIzq - iNumeroPaginasMostrar) + ",'" + hdfPaginaActual.ClientID + "','" + btnAyuda.ClientID + "')\">...</a></li>");
            iPaginaHasta = ((iTotalPaginas - iNumeropaginaIzq) >= iNumeroPaginasMostrar ? (iNumeropaginaIzq + iNumeroPaginasMostrar - 1) : iTotalPaginas);
            for (var i = iNumeropaginaIzq; i <= iPaginaHasta; i++)
            {
                if (i == iPaginaActual)
                    sb.Append("<li><a href=\"javascript:void(0)\" class=\"current\" onclick=\"IrPagina(" + i + ",'" + hdfPaginaActual.ClientID + "','" + btnAyuda.ClientID + "')\">" + i + "</a></li>");
                else
                    sb.Append("<li><a href=\"javascript:void(0)\" onclick=\"IrPagina(" + i + ",'" + hdfPaginaActual.ClientID + "','" + btnAyuda.ClientID + "')\">" + i + "</a></li>");
            }
            if ((iTotalPaginas - iNumeropaginaIzq) >= iNumeroPaginasMostrar) sb.Append("<li><a href=\"javascript:void(0)\" onclick=\"IrPagina(" + (iNumeropaginaIzq + iNumeroPaginasMostrar) + ",'" + hdfPaginaActual.ClientID + "','" + btnAyuda.ClientID + "')\">...</a></li>");
            litPaginacion.Text = sb.ToString();
        }
    }
}
